21. Memory Hierarchy Design - Basics

第21章内存层次设计——基础
AP SHANTHI博士

 

本模块的目标是讨论对分层内存系统的需求,并讨论可用的不同类型的内存。

 

前面的模块涉及中央处理单元 (CPU),我们在其中讨论了算术和逻辑单元 (ALU) 以及控制路径的实现。我们还研究了通过利用 ILP 来提高处理器性能的不同技术。本模块讨论数字计算机的另一个组件——即内存。

 

每当我们查看内存系统时,我们都希望拥有快速、大容量且廉价的内存。现在,将所有这些放在一起是不可能的。更快的内存更昂贵,也可能占用更多空间。因此,将所有这些功能放在一个存储系统中是不切实际的,获得所有好处的唯一解决方案是拥有一个分层存储系统。

 

在分层内存系统中,整个可寻址内存空间在最大、最慢的内存和逐渐变小和变快的内存中可用,每个内存都包含其下方的内存子集,并逐步向处理器前进。这种记忆的分层组织主要是因为局部性原则。也就是说,程序在任何时刻访问地址空间的一小部分。我们知道处理器将 90% 的时间花在 10% 的代码上。基本上有两种不同类型的局部性:时间性和空间性。

 

时间局部性(Locality in Time):如果一个项目被引用,它很快就会被再次引用(例如,循环、重用)
空间局部性(Locality in Space):如果引用了一个项,那么地址相近的项往往很快就会被引用(例如,直线代码、数组访问)而在过去的二十年左右的时间里,硬件依赖于这个原理提供速度的地方。
 

时间和空间局部性确保几乎所有引用都可以在较小的存储器中找到,同时给人一种将大而快速的存储器呈现给处理器的错觉。图 25.1 显示了分层存储系统。更快、更小、更昂贵的存储器离处理器更近。当我们移动 远离处理器,速度降低,成本降低,尺寸增加。寄存器和缓存更靠近处理器,满足处理器的速度要求,主存次之,次要存储满足容量要求。图中还标出了这些类型存储器中的每一种的典型大小和访问时间。作为 CPU 本身一部分的寄存器的访问时间非常短,只有几百皮秒,存储空间只有几千字节。一级缓存有几千字节,访问时间只有几纳秒。二级缓存有几百千字节,访问时间增加到大约 10 纳秒。存储在三级缓存的情况下增加到几兆,并且访问时间增加到几十纳秒。主存储器的访问时间在几百纳秒的数量级,但也有更大的存储空间。二级存储的存储量是 TB 级的,访问时间达到几毫秒。按照相同的思路,该图还显示了个人移动设备的内存层次结构。

 



 

图 25.2 显示了内存性能差距。尽管人们提出了不同的技术进步来提高处理器和内存的速度,但内存速度并没有跟上处理器的速度,如图 25.2 所示。分层内存系统试图通过将最快的内存放置在处理器附近来隐藏速度上的差异。

 

对于最近的多核处理器,内存层次结构设计变得更加重要,因为总峰值带宽随着内核数量的增加而增长。例如,英特尔酷睿 i7 可为每个内核每个时钟生成两个参考。四核和 3.2 GHz 时钟,有 256 亿次 64 位数据引用/秒和 128 亿次 128 位指令引用= 409.6 GB/秒。DRAM 带宽仅为其中的 6%(25 GB/s)。因此,除了分层内存系统,我们还需要不同的优化,如多端口、流水线缓存、每核两级缓存和片上共享三级缓存。高端微处理器通常具有超过 10 MB 的片上缓存,需要注意的是,这会消耗大量的面积和功率预算。

 

不同类型的内存:有不同类型的内存可用。一种分类基于访问类型。随机存取存储器 (RAM) 对所有位置具有相同的访问时间。RAM 有两种类型 - 动态 RAM 和静态 RAM。动态随机存取存储器密度高、功耗低、便宜且速度慢。之所以称为动态,是因为它需要定期“刷新”。SRAM – 静态随机存取存储器具有低密度、高功耗、昂贵且快速的特点。在这里,内容将“永远”持续(直到断电)。我们还有“非随机”访问技术,访问时间因地点和时间而异。此类内存的示例包括磁盘和 CDROM。还有另一种类型的内存,即顺序存取内存 where the access time is linear in location (e.g.,Tape). Normally, Dynamic RAM (DRAM) is used for main memory and Static RAM (SRAM) is used for cache.

 

Static RAM: Figure 25.3 gives the construction of a typical SRAM cell. It requires six transistors for construction – hence the reduced density and increased cost. The six transistors are connected in a cross connected fashion. They provide regular and inverted outputs. Since it is implemented using CMOS process, it requires low power to retain the bit.


 

SRAM 存储器的组织:图 25.4 显示了 SRAM 存储器的一维组织,由 16 个字组成,每个字 4 位。四个地址位提供给地址解码器,它选择 16 个字之一。该字的所有位都被选中。写使能信号用于使能写操作。数据输入线用于将新数据写入所选字,数据输出线用于从所选字中读取数据。


 

动态内存: DRAM 单元由单个晶体管和电容器组成,如图 25.5 所示,从而降低了成本和存储空间。然而,这是一种破坏性的读出。它需要定期刷新,比如每 8 毫秒,但每行可以同时刷新。对于写操作,我们必须驱动位线并选择行。对于读操作,我们必须将位线预充电到 Vdd 并选择行。单元和位线共享电荷,位线上的电压变化非常小。感应放大器可以检测约 100 万个电子的变化。执行读取后,将执行写入以恢复该值。刷新只是对每个单元格的虚拟读取。DRAM 的优势在于其结构简单:与 SRAM 中的四个或六个晶体管相比,每个位只需要一个晶体管和一个电容器。这允许 DRAM 达到非常高的密度。所使用的晶体管和电容器极小;数十亿可以容纳在单个存储芯片上。由于其存储单元的动态特性,DRAM 消耗相对大量的功率,并采用不同的方式来管理功率消耗。


图 25.5

 

DRAM 存储器的组织:图 25.6 显示了 DRAM 的二维组织。单元格排列为二维阵列。地址线分为两部分——一部分用于行解码器,另一部分用于列解码器。只能读取或写入行列解码器选择的单元格。与往常一样,虽然未显示数据输入和数据输出线,但它们分别用于写入和读取操作。为了节省地址线的数量,可以多路复用地址线。可以先传输地址的上半部分,然后再传输地址的下半部分。行地址选通 (RAS) 表示行地址被传输,列地址选通 (CAS) 表示列地址正在传输。

 


 

内存优化:我们知道,即使引入了更快的内存技术,内存的速度仍然无法与处理器速度相提并论。这是一个主要的瓶颈。回想一下 Amdahl 定律,它指定如果不加快内存操作等常见操作,则整体性能将受到限制。内存容量和速度应该随着处理器速度线性增长。然而,不幸的是,内存容量和速度并没有跟上处理器的步伐 。因此,我们可以考虑一些优化来提高内存访问。通常执行的优化是:

 对同一行的多次访问
同步动态随机存取存储器
向 DRAM 接口添加时钟
以关键词为先的突发模式
更广泛的接口
双倍数据速率 (DDR)
每个 DRAM 设备上有多个 bank
 

Different types of DRAM: Based on the optimizations performed, there are different types of DRAMS.

Synchronous DRAM, SDRAM, is designed to synchronize itself with the timing of the CPU. This enables the memory controller to know the exact clock cycle when the requested data will be ready. Therefore, the CPU no longer has to wait between memory accesses. SDRAM chips also take advantage of interleaving and burst mode functions, which make memory retrieval even faster. SDRAM modules come in several different speeds so as to synchronize itself with the CPU’s bus they’ll be used in. The maximum speed that SDRAM will run is limited by the bus speed of the computer. SDRAM is the most common type of DRAM found in today’s personal computers. Power consumed can be reduced in SDRAMs by lowering the voltage and using the low power mode which ignores the clock and continues to refresh.

 

双倍数据速率SDRAM(DDR SDRAM)是一种新型的SDRAM技术,支持在每个时钟周期的两个边沿(上升沿和下降沿)进行数据传输,有效地使内存芯片的数据吞吐量翻倍。例如,对于 DDR SDRAM,100 或 133MHz 内存总线时钟速率产生 200MHz 或 266MHz 的有效数据速率。DDR SDRAM 使用额外的电源线和地线,并且需要 184 针 DIMM 模块,而不是 SDRAM 使用的 168 针 DIMM。DDR SDRAM 还消耗更少的功率,这使得它非常适合笔记本电脑。

 

Direct Rambus DRAM (RDRAM)是一种新的 DRAM 架构和接口标准,挑战了传统的主存储器设计。它通过称为直接 Rambus 通道的窄 16 位总线以高达 800MHz 的速度传输数据。由于称为“双时钟”的特性,这种高速时钟速率是可能的,它允许在时钟周期的上升沿和下降沿进行操作。Rambus 旨在适应现有的主板标准。插入的组件 主板连接称为 Rambus 内嵌内存模块 (RIMM)。它们取代了传统的 DIMM。DDR SDRAM和RDRAM在微机市场的高性能端展开竞争。由于其新架构,RDRAM 系统比 DDR SDRAM 贵一些。许多计算机公司都生产具有两种存储系统的高端微型计算机,并让消费者做出自己的选择。

 

图形双倍数据速率 SDRAM (GDDR SDRAM)是一种专用 DDR SDRAM,设计用作图形处理单元 (GPU) 的主存储器。GDDR SDRAM 与 DDR3 等商品类型的 DDR SDRAM 不同,尽管它们共享一些核心技术。它们的主要特点是 DRAM 内核和 I/O 接口的时钟频率更高,从而为 GPU 提供更大的内存带宽。截至 2015 年,GDDR 已连续四代:GDDR2、GDDR3、GDDR4 和 GDDR5。

 

只读存储器 (ROM)是一种用于计算机和其他电子设备的非易失性存储器。ROM中存储的数据只能缓慢、困难或根本不能修改,因此主要用于存储固件,作为台式计算机的BIOS和嵌入式设备(也用作代码保护设备)。我们的 ROM 在正常操作中是只读的,但仍然可以以某种方式重新编程。可擦除可编程只读存储器 (EPROM) 和电可擦除可编程只读存储器 (EEPROM) 可以擦除和重新编程,但通常只能以相对较慢的速度完成,可能需要特殊设备才能实现,并且通常是只能达到一定的次数。

 

闪存是一种电子非易失性计算机存储介质,可以进行电擦除和重新编程。它是一种 EEPROM。在被覆盖之前,它必须被擦除(以块为单位)。它的写周期数有限。它比 SDRAM 便宜,但比磁盘贵。它比 SRAM 慢,比磁盘快。广泛应用于PDA、数字音频播放器、数码相机、手机等。它的抗机械冲击是它在便携式设备中比硬盘更受欢迎的原因,以及它的高耐用性,能够承受高压、高温、浸入水中等。

 

存储器层次术语:现在让我们看一下用于分层存储器系统的术语。甲命中是说,如果数据出现在上层一些块发生。Hit Rate是上层内存访问的分数,Hit Time是访问上层的时间,它由 RAM 访问时间 + 确定命中/未命中的时间组成。甲小姐是说,如果从一个块在较低的水平来检索数据的需求发生。未命中率 = 1 –(命中率)。Miss Penalty是替换上层块 的时间 + 将块传送到处理器的时间。命中时间通常是<< 罚小姐。当在缓存中找不到某个词时,就会发生未命中:

 

• 从层次结构中的较低级别获取单词,需要更高的延迟参考

 

• 较低级别可能是另一个缓存或主内存

 

• 还获取包含在块中的其他单词

 

• 利用空间局部性

 

性能指标:延迟是缓存的一个问题,带宽是多处理器和 I/O 的一个问题。访问时间是读取请求和所需字到达之间的时间。循环时间是不相关的内存请求之间的最短时间。

 

显示对性能影响的示例:假设处理器以 CPI = 1.1 和 50% 算术/逻辑、30% 加载/存储、20% 控制指令的时钟速率 = 200 MHz(每个周期 5 ns)执行。假设 10% 的内存操作得到 50 个周期未命中惩罚。

 

理想的消费物价指数	1.1
数据缺失	1.5
小姐	0.5
 

 

CPI = 理想 CPI + 每条指令的平均停顿 = 1.1(cycles) + ( 0.30 (datamops/ins) x 0.10 (miss/datamop) x 50 (cycle/miss) )

 

= 1.1 周期 + 1.5 周期 = 2. 6

 

这表明处理器有 58% 的时间都在等待内存!添加 1% 的指令未命中率将为 CPI 增加额外的 0.5 个周期。

 

这向我们展示了内存层次结构设计的重要性。寄存器和内存之间的数据传输由编译器和程序员管理。高速缓存和内存之间的数据传输由硬件管理。内存和磁盘之间的传输由硬件和操作系统(虚拟内存)以及程序员(文件)管理。

 

总而言之,需要分层存储系统来满足速度、容量和成本要求。有两种不同类型的局部性被利用:

 

 

– 时间局部性(Locality in Time):如果一个项目被引用,它很快就会被再次引用

– 空间局部性(Locality in Space):如果一个项目被引用,其地址附近的项目往往很快就会被引用

 

通过利用局部性原则,我们为用户提供了在最便宜的技术中可用的尽可能多的内存,并以最快的技术提供的速度提供访问。SRAM 和 DRAM 分别作为高速缓存和主存储器非常有用。其他类型的存储器如 ROM 和闪存也非常有用。DRAM 速度慢但便宜且密度大。为用户呈现大内存系统是一个不错的选择。SRAM 速度快但价格昂贵且不是很密集,是为用户提供快速访问时间的不错选择。

 

网页链接/支持材料

计算机组织与设计——硬件/软件接口,David A. Patterson 和 John L. Hennessy,第 4 版,Morgan Kaufmann,Elsevier,2009 年。
Computer Architecture – A Quantitative Approach,John L. Hennessy 和 David A.Patterson,第 5 版,Morgan Kaufmann,Elsevier,2011。
计算机组织,Carl Hamacher、Zvonko Vranesic 和 Safwat Zaky,第 5 版,McGraw-Hill 高等教育,2011 年。